[20251204] BOJ / P3 / Mowing the Lawn / 권혁준 #1580
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🧷 문제 링크
https://www.acmicpc.net/problem/5977
🧭 풀이 시간
30분
👀 체감 난이도
✏️ 문제 설명
길이 N인 수열 A에서 연속한 K+1개 이상의 원소를 고르지 않고 만들 수 있는 부분 수열 합의 최댓값을 구해보자.
🔍 풀이 방법
dp[i] = i번째 원소까지 고른 경우의 최댓값이라 정의하고,
s[i] = a[1] + ... + a[i]라고 정의하면,
dp[i] = max(dp[i-j-1] + s[i] - s[i-j]) (j <= K) 이다.
그대로 구현하면 O(NK)로 시간 초과가 날 거라서
monotone deque을 이용해 max가 되는 지점의 인덱스를 뽑아주었다.deque에 넣을 때는 dp[i] + s[N] - s[i+1]을 넣어 deque 내에서의 일관성이 깨지지 않도록 했다.
⏳ 회고
ez